package com.ftg.learn.back;

import com.ftg.learn.chapter13.Wolf;

import java.util.Arrays;

/**
 * @author KangJx
 * @date 2021/7/21
 */
public class LearnArr {

    public void testArr01(){
        //默认0
        int[] arr = new int[5];
        arr[0] = 23;
        //0.0
        double[] d = new double[2];
        d[1] = 2.34;
        //false
        boolean[] b1 = {true,false};

        //引用类型的默认null
        Wolf[] ws = new Wolf[3];
        Wolf w1 = new Wolf();
        w1.setType("灰色");
        w1.setAddress("大草原");
        ws[0] = w1;

        Wolf w2 = new Wolf();
        w2.setType("白色");
        w2.setAddress("冰原");
        ws[1] = w2;

        System.out.println(ws[0].getType());

        //循环赋值
        int[] as = new int[20];
        for(int i = 0 ,len = as.length;i < len;i++){
            as[i] = 23+i;
        }
        //遍历
        for(int i : as){
            System.out.println(i);
        }

        //如何让一个无序数组变成有序 数组的排序
        int[] arr1 = {7,8,3,13,5,1,78};

        //6
        for(int i = 0 ,alen = arr1.length;i < alen;i++){

            for(int x = 0,len = arr1.length - 1;x < len- i;x++){
                if(arr1[x] > arr1[x + 1]){
                    int t = arr1[x];
                    arr1[x] = arr1[x + 1];
                    arr1[x + 1] = t;
                }
            }

        }

        //有序查找 二分法 无序 循环
        int[] arr2 = {7,8,3,13,5,1,78};
        for(int i = 0 ;i < arr2.length;i++){
            if(arr2[i] == 99){
                System.out.println("有");
                break;
            }
        }

        //遍历
        for(int i : arr1){
            System.out.print(i+"\t");
        }


        //数组 : 开辟连续的物理地址,用下标来表示每一个位置，下标是从0开始正整数 下标最大值 永远长度小1个
        // 多维度 ： 一维 X  二维 x,y 三维 x,y,z
         //           [x]       [x][y]          [x][y][z] = (类型)
        //---定义
//            [类型【】【】【】....] 变量名称 = new [类型【长度必填的】【】【】....];
        //    数据类型相同的数据集合
        // [数据类型[]] [标识符（变量）] = new [数据类型[长度]];
        //取值结构 变量名称[下标].().().();
        //数据结构 ：存储数据时，所使用的结构
        // 栈 ： 特点 先进的后出
        // 线性表结构 : 数组 : 随机的任何位置
        // 队列 : 先进先出
        //数据 ：就是从信息当中提取出来的有用知识
        //信息：其实就是数据载体s
    }

    public static void main(String[] args) {

        int[][][] as1 = new int[2][3][4];
        for(int i = 0 ; i < as1.length;i++){
            for(int j = 0 ;j < as1[i].length;j++){
                for(int x = 0;x<as1[i][j].length;x++){
                    System.out.print(as1[i][j][x]+"\t");
                }
                System.out.println();
            }
            System.out.println();
        }

        //二维数组 多数组 定义 取值   赋值
//        int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
//        as1[0] = arr2;
//        [x] = 0  as1[0-1][0-1][0-2];
//        [x =0][y=0] = {1,2,3}
//        x0y0z0 = 1;
//        x0y0z1 = 2;
//        [x = 0][y=1] = {4,5,6}
//        x0y1z0=4
//        x0y1z1 = 5
//        x=1    System.out.println(as1[0-1][0-2][0-3]);

        System.out.println();


    }

    public boolean findTwo(int[] arr,int no){
        //二分法
        int min = 0;
        int max = arr.length - 1;
        while(min < max){
            int mid = (min + max) >>> 1;
            if(arr[mid] > no){
                max = mid - 1;
            }else if(arr[mid] < no){
                min = mid + 1;
            }else{
                return true;
            }
        }
        return false;
    }

}
